This invention relates to a computer-implemented method for generating one or more system calls from a command originating from a software process.
The concept of system calls and their use within common software processes is well known. A software process can be thought of as a series of instructions that are to be implemented on a processor of a computer system. Normally, the execution of these instructions will involve accessing a multitude of additional hardware components apart from the processor, in particular memory and other data storage devices. In modern computer systems, with increasing levels of hardware and software complexity, it becomes inefficient for higher-level software processes to access and instruct hardware directly, at the level of machine code, and so a standard software hierarchy has developed. This hierarchy is illustrated in FIG. 1.
In this hierarchy the software is split into two main spaces: the kernel or operating system space 8 and a higher-level or application space 1. Within the kernel or operating system space 8 resides an operating system 4. The operating system thus provides an interface between hardware systems 5 and higher-level software processes 2, 3 operating in the application space 1. This then allows a greater flexibility in the programming of these processes and a certain level of hardware abstraction. The hardware may include any standard feature of computer systems 6 as known in the art, for example data storage devices 7.
When a software process wishes to make use of hardware 5 it utilizes a set of system calls. These system calls are a series of standard system functions that are used internally by the operating system 4; each function has a well-documented set of input arguments and returned outputs. Hence, if an application developer wishes to make use of certain hardware 5 within an application, they are able to call the system function through executing a standard line of code within the application instructions.
In the context of database solutions, the software process involves a database management system (DBMS) 3, running in the application space 1. In these situations the DBMS 3 uses a series of system calls to implement database procedures. With many such management systems, a proprietary software application 2 is configured to operate on top of core DBMS services; for example a large bespoke database may have a unique front-end yet use common data interrogation commands.
In modern database applications, implemented using any well-known DBMS as described above, it is often a problem to maintain large databases in the face of rapidly changing technological environments. For example, many companies will retain persistent database structures, such as employee records or project records, over a series of years or even decades. However, this is in contrast with the relentless pace of hardware and operating system change. This is especially the case when the database outgrows its storage limits, common with large-scale public sector projects and multimedia archives.
In the past the solution to this problem has been to constantly upgrade the hardware and software as the underlying technology changes. This piecemeal approach is well known to those in the art and indeed produces much demand in database support services to supply and configure new solutions. However, it often resorts in expensive upgrades and long downtimes at regular intervals. In regard to the problem of outgrowing storage space, new hardware devices are often added, bringing with them a lengthy process of file transfers. In regard to taking advantage of new technologies this often requires new versions of software and additional programming.